#include "stdafx.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
/////////////////////////////////////////////////////////////////////////////////////////////////
void calc_rsi(tagUMyCalcFormula*pFormula,long numCalc,phistory_data paData,double*dataCalc[10],long decNum,long sec_type,_procReflection procReflection)
{
	long i=1,lPrice(0);
	double seedPrice(__price_seed__[decNum]);
	for(;i<numCalc;++i)
	{
		lPrice=paData[i].ClosePx-paData[i-1].ClosePx;
		dataCalc[5][i] = abs(lPrice)/seedPrice;
		dataCalc[4][i] = lPrice/seedPrice;
		if(dataCalc[4][i]<0) dataCalc[4][i] = 0;
	}
	memcpy(dataCalc[3],dataCalc[4],numCalc*sizeof(double));
	memcpy(dataCalc[2],dataCalc[5],numCalc*sizeof(double));
	UMyCalc_SMA2(dataCalc[3],numCalc,pFormula->infoParam[0].nowValue);
	UMyCalc_SMA2(dataCalc[2],numCalc,pFormula->infoParam[0].nowValue);
	UMyCalc_DIV(dataCalc[0],dataCalc[3],dataCalc[2],numCalc);
	UMyCalc_MUL2(dataCalc[0],100,numCalc);

	memcpy(dataCalc[3],dataCalc[4],numCalc*sizeof(double));
	memcpy(dataCalc[2],dataCalc[5],numCalc*sizeof(double));
	UMyCalc_SMA2(dataCalc[3],numCalc,pFormula->infoParam[1].nowValue);
	UMyCalc_SMA2(dataCalc[2],numCalc,pFormula->infoParam[1].nowValue);
	UMyCalc_DIV(dataCalc[1],dataCalc[3],dataCalc[2],numCalc);
	UMyCalc_MUL2(dataCalc[1],100,numCalc);

	UMyCalc_SMA2(dataCalc[4],numCalc,pFormula->infoParam[2].nowValue);
	UMyCalc_SMA2(dataCalc[5],numCalc,pFormula->infoParam[2].nowValue);
	UMyCalc_DIV(dataCalc[2],dataCalc[4],dataCalc[5],numCalc);
	UMyCalc_MUL2(dataCalc[2],100,numCalc);
}
